#ifndef BINHEAPMIN_H
#define BINHEAPMIN_H

#include <iostream>
#include "arvbin.h"

using namespace std;

class binHeapMin{
private:
  int n;                                  /* Numero de elementos no heap */
  int tam;                                /* Tamanho do heap */
  arvbin ** vetor;                        /* vetor com elementos */
  void refaz(int esq, int dir);           /* Refaz condicao do heap */
  void constroiHeap();                    /* Constroi heap */
public:
  binHeapMin(int tamanho);                /* Constroi heap vazio */
  ~binHeapMin();
  void carregaDados();                    /* Le dados via teclado e insere no heap */
  void Huffman();                         /* Executa o procedimento Huffman. */
  void mostraCodigos();                   /* Chama a funcao mostra codigo da classe arvbin. */
  void insere( arvbin * &x);              /* Insere x no heap */
  void removeMin( arvbin* & itemMin );    /* Remove e retorna menor item */
  bool vazia() const;                     /* Teste se heap vazio */
  void imprime();
};
#endif
